home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 January / EnigmA AMIGA RUN 33 (1999)(G.R. Edizioni)(IT)[!][issue 1999-01].iso / earcd / faq / computer-lang / ada / learning.z / learning
Text File  |  1999-01-01  |  58KB  |  1,119 lines

  1. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!mojo.eng.umd.edu!hecate.umd.edu!research-01.ski.mskcc.org!buffnet2.buffnet.net!news.sprintlink.net!terra.net!news.bitstream.com!tristram.edc.org!news3.near.net!paperboy.wellfleet.com!news-feed-1.peachnet.edu!usenet.eel.ufl.edu!bofh.dot!tank.news.pipex.net!pipex!oleane!in2p3.fr!swidir.switch.ch!epflnews!dinews.epfl.ch!Magnus.Kempe
  2. From: Magnus.Kempe@di.epfl.ch (Magnus Kempe)
  3. Newsgroups: comp.lang.ada,comp.edu,comp.answers,news.answers
  4. Subject: Ada FAQ: Learning Ada
  5. Followup-To: poster
  6. Date: 31 May 1996 15:39:58 GMT
  7. Organization: None
  8. Lines: 1093
  9. Sender: magnus@lglsun4.epfl.ch (Magnus Kempe)
  10. Approved: news-answers-request@MIT.EDU
  11. Distribution: world
  12. Message-ID: <4on3se$b5n@disunms.epfl.ch>
  13. Reply-To: Magnus.Kempe@di.epfl.ch (Magnus Kempe)
  14. NNTP-Posting-Host: lglsun4.epfl.ch
  15. Mime-Version: 1.0
  16. Content-Type: text/plain; charset=iso-8859-1
  17. Content-Transfer-Encoding: 8bit
  18. Summary: Learning Ada Frequently Asked Questions (and answers).
  19.          Please read before posting.
  20.          Does *not* get into Ada programming questions
  21.            [for that see the companion Ada/programming FAQ].
  22. Keywords: advanced language, artificial languages, computer software,
  23.           data processing, programming languages, learning, tutorials, Ada
  24. Xref: senator-bedfellow.mit.edu comp.lang.ada:45768 comp.edu:17358 comp.answers:19072 news.answers:73406
  25.  
  26. Archive-name: computer-lang/Ada/learning
  27. Comp-lang-ada-archive-name: learning
  28. Comp-edu-archive-name: learning-Ada
  29. Posting-Frequency: monthly
  30. Last-modified: 31 May 1996
  31. Last-posted: 22 April 1996
  32.  
  33.                                  Learning Ada
  34.                        Frequently Asked Questions (FAQ)
  35.  
  36. Recent changes to this FAQ are listed in the first section after the table
  37. of contents. This document is under explicit copyright.
  38.  
  39. Introduction
  40.  
  41. This is a list of resources to learn Ada. This list includes interactive
  42. tutorials, books, source code collections, etc.
  43.  
  44. Ada is an advanced, modern programming language, designed and standardized
  45. to support and strongly encourage widely recognized software engineering
  46. principles: reliability, portability, modularity, reusability, programming
  47. as a human activity, efficiency, maintainability, information hiding,
  48. abstract data types, genericity, concurrent programming, object-oriented
  49. programming, etc.
  50.  
  51. All validated Ada compilers (i.e. a huge majority of the commercial Ada
  52. compilers) have passed a controlled validation process using an extensive
  53. validation suite. Ada is not a superset or extension of any other language.
  54. Ada does not allow the dangerous practices or effects of old languages,
  55. although it does provide standardized mechanisms to interface with other
  56. languages such as Fortran, Cobol, and C.
  57.  
  58. Ada is recognized as an excellent vehicle for education in programming and
  59. software engineering, including for a first programming course.
  60.  
  61. Ada is defined by an international standard (the language reference manual,
  62. or LRM), which has been revised in 1995. Ada is taught and used all around
  63. the world (not just in the USA). Ada is used in a very wide range of
  64. applications: banking, medical devices, telecommunications, air traffic
  65. control, airplanes, railroad signalling, satellites, rockets, etc.
  66.  
  67. The latest version of this FAQ is always accessible through WWW as
  68. http://lglwww.epfl.ch/Ada/FAQ/learning.html#title
  69.  
  70. Maintenance
  71.  
  72. This FAQ is maintained on an individual volunteer basis, by Magnus Kempe
  73. (Magnus.Kempe@di.epfl.ch). [Note: This is done as a hobby, not in my
  74. capacity as an employee at the Swiss Federal Institute of Technology. --MK]
  75.  
  76. ----------------------------------------------------------------------------
  77. Report of a book, product, service, or event, etc., does not constitute an
  78. endorsement. Opinions (if any) expressed are those of the submitters and/or
  79. maintainer.
  80. ----------------------------------------------------------------------------
  81.  
  82. Table of Contents:
  83.  
  84.    * 1: Recent changes to the FAQ
  85.  
  86.    * 2: Information about this document
  87.  
  88.    * 3: Are there computer-based Ada tutorials?
  89.  
  90.    * 4: Is there a list of good Ada books?
  91.  
  92.         o Ada 95 Books
  93.         o Group 1: Books Suitable for a First Course in Programming
  94.         o Group 2: Other Books Intended for Undergraduate Courses
  95.         o Group 3: A Selection of Other Ada-Related Books
  96.  
  97.    * 5: Credits
  98.  
  99.    * 6: Copying this FAQ
  100.  
  101. ----------------------------------------------------------------------------
  102.  
  103. 1: Recent changes to this FAQ
  104.  
  105.    * 950531: updated list of tutorials.
  106.    * 950522: approved for posting in *.answers.
  107.    * 960309: added list of Ada 95 books.
  108.    * 960128: created, with contributions from David Wheeler and Mike
  109.      Feldman.
  110.  
  111. ----------------------------------------------------------------------------
  112.  
  113. 2: Information about this document
  114.  
  115. This file is posted monthly to comp.lang.ada, comp.edu, comp.answers, and
  116. news.answers.
  117.  
  118. This document has a home on the Home of the Brave Ada Programmers (HBAP) WWW
  119. Server, in hypertext format, URL
  120. http://lglwww.epfl.ch/Ada/FAQ/learning.html#title
  121.  
  122. It is available --as posted in *.answers-- on rtfm.mit.edu, which archives
  123. all FAQ files posted to *.answers; see directory
  124. ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/computer-lang/Ada
  125.  
  126. The text-only version is also available in directory
  127. ftp://lglftp.epfl.ch/pub/Ada/FAQ
  128.  
  129. Magnus Kempe maintains this document; it's a hobby, not a job. Feedback
  130. (corrections, suggestions, ideas) about it is to be sent via e-mail to
  131. Magnus.Kempe@di.epfl.ch
  132. Thanks.
  133.  
  134. In all cases, the most up-to-date version of the FAQ is the version
  135. maintained on the HBAP WWW Server. Please excuse any formatting
  136. inconsistencies in the posted, text-only version of this document, as it is
  137. automatically generated from the on-line, hypertext version.
  138.  
  139. ----------------------------------------------------------------------------
  140.  
  141. 3: Are there computer-based Ada tutorials?
  142.  
  143. There are many ways to learn Ada.
  144.  
  145. Here are some on-line Ada tutorials expressly designed for self-study:
  146.  
  147.   1. Lovelace is a free (no charge) self-directed Ada 95 tutorial available
  148.      on the World Wide Web (WWW), at
  149.      http://lglwww.epfl.ch/Ada/Tutorials/Lovelace/lovelace.html
  150.  
  151.      Lovelace assumes that the user already knows some other algorithmic
  152.      programming language (such as C, C++, or Pascal). Lovelace is
  153.      interactive; it contains a number of short sections, and most short
  154.      sections end with a question (to help ensure that you've understood the
  155.      section's material). Lovelace can be used directly from the WWW (see
  156.      above), downloaded from
  157.      http://lglwww.epfl.ch/Ada/Tutorials/Lovelace/download.html
  158.  
  159.      or run from a CD-ROM, described at http://ftp.cdrom.com/titles/ada.html
  160.  
  161.      Lovelace was developed by David A. Wheeler.
  162.  
  163.   2. Learn Ada on the Web (LAW) by Dr. Fintan Culwin was developed to freely
  164.      provide Ada training on the World Wide Web, at URL
  165.      http://www.scism.sbu.ac.uk/law/lawhp.html
  166.  
  167.      LAW is concerned with initial software development education rather
  168.      than with helping programmers who already know other computer
  169.      languages. Also, LAW is concerned as much with providing software
  170.      engineering tools over the Web as with presenting information regarding
  171.      Ada. Dr. Culwin believes that the Lovelace and LAW projects are
  172.      complementary rather than needless duplication of each other, since
  173.      their target users are so different.
  174.  
  175.      LAW includes an interesting capability to interactively create Ada
  176.      programs remotely over the Web; you might want to use this LAW
  177.      capability even if you choose to use another tutorial.
  178.  
  179.      Dr. Culwin is at South Bank University, London, and may be contacted at
  180.      fintan@vax.sbu.ac.uk
  181.  
  182.   3. Coronado Enterprises Tutorials are shareware tutorials. Their tutorial
  183.      of interest to us is an Ada 83 tutorial located at
  184.      http://www.swcp.com/~dodrill/adalist.html
  185.      (the suggested fee is US$15)
  186.  
  187.   4. The C/C++ Programmers Ada Tutorial is a short hypertext tutorial,
  188.      located at http://lglwww.epfl.ch/Ada/Ammo/Cplpl2Ada.html
  189.  
  190.      for programmers who have a C or C++ style programming language
  191.      background. It was written by Simon Johnson, with some additional text
  192.      by Tucker Taft.
  193.  
  194.   5. Ada-Tutr is a shareware interactive Ada tutor developed by John Herro
  195.      of Software Innovations Technology. You can download it from the
  196.      Ada-Tutr web site, at http://members.aol.com/AdaTutor/sit.htm
  197.  
  198.      or the Ada-Tutr ftp site, located at
  199.      ftp://members.aol.com/AdaTutor/sit.htm
  200.  
  201.      You can also download it by calling the SaddleBag BBS, 1-407-773-0831,
  202.      and log in with the name Ada Tutor and the password tutor. The Public
  203.      Ada Library's copy of Ada-Tutr (mirror) is another way to retrieve
  204.      Ada-Tutr. There is also an older version of Ada-Tutr for Ada 83
  205.      (mirror). AdaTutr has a number of exercises that give a more complete
  206.      understanding of Ada but will take more time to complete than a tutor
  207.      without such exercises (such as Lovelace).
  208.  
  209.   6. HOT_Ada, a two-volume course/tutorial distributed on floppy disks, is
  210.      available from Stage Harbor Software; it is not directly available via
  211.      the WWW. It does not include a compiler. It is similar to a set of
  212.      tutorial slides, except for the hyper-linking features and the fact
  213.      that you can proceed at your own pace and accommodate your own learning
  214.      style and needs.
  215.  
  216.      HOT_Ada is designed for individual, self-paced learning. One version
  217.      runs on Macintoshes, another on PCs with Windows. The many hypertext
  218.      and hypergraphic features allow you, for instance, to click on a "hot
  219.      word" to see its definition in the Glossary or click on a "hot icon" in
  220.      a diagram to jump to the corresponding line of Ada source code in a
  221.      previously hidden listing.
  222.  
  223.      The regular price is $29 for a single volume, $49 for the two-volume
  224.      set.
  225.  
  226.      E-mail inquiries welcomed at: bscrawford@aol.com. Regular mail
  227.      inquiries or mail orders (specify Mac or Windows, personal checks
  228.      accepted) can be sent to:
  229.  
  230.               Stage Harbor Software
  231.               9 Patriots Drive
  232.               Lexington, MA 02173
  233.  
  234.      What does the course cover?
  235.  
  236.      HOT_Ada is a two-volume course/tutorial, distributed on floppy disks.
  237.      Volume 1, the "core" part of the course, provides a pictorial
  238.      introduction to object technology (OOA and OOD presented in a
  239.      language-independent manner) and a pictorial introduction to Ada 9X,
  240.      with emphasis on its OOP features. Volume 2 provides an extended case
  241.      study with a step-by-step illustration of the OOA, OOD and OOP concepts
  242.      outlined in Volume 1. A mixture of classification and composition
  243.      approaches is illustrated. The OOA and OOD material is strongly
  244.      influenced by the Fusion Method, a fusion of OMT, Booch, Coad-Yourdon,
  245.      et al. HOT_Ada is designed for individual, self-paced learning. One
  246.      version runs on Macintoshes. Another version runs on PC's with Windows.
  247.      There are many hypertext and hypergraphic features. For example, you
  248.      can click on a "hot word" to see its definition in the Glossary, or
  249.      click on a "hot icon" in a diagram to jump to the corresponding line of
  250.      Ada source code in a previously hidden listing. A major theme of the
  251.      course is the reuse of patterns and parts.
  252.  
  253.      Who can benefit from HOT_Ada?
  254.  
  255.      Several categories of people can benefit from self-study using HOT_Ada.
  256.      If you are familiar with Ada 83, and have begun to study Ada 9X, you
  257.      can supplement other efforts by reviewing this picture-based material
  258.      and the case study. If, as an Ada software engineer, you want to learn
  259.      more about object technology in general, especially the Fusion
  260.      approach, HOT_Ada provides an ideal combination for learning and "tying
  261.      it all together." If you are a newcomer to Ada, the visual approach of
  262.      HOT_Ada may provide you with an excellent way to start your learning
  263.      process -- to be followed up using traditional text and classroom
  264.      methods.
  265.  
  266.      What are the System Requirements?
  267.  
  268.         o PC: Any PC with Windows Version 3.0 or later should be fine. You
  269.           will need about six MB of free space on your hard disk.(Two MB for
  270.           the ToolBook runtime and three MB for the two volumes of HOT_Ada.)
  271.           The beta version had been distributed on 4 disks. Version 1.1 (and
  272.           now Version 1.2) has been compressed, and is being delivered on a
  273.           single disk. You will need to "unzip" it.
  274.  
  275.         o Mac: Any reasonably modern Mac (e.g., Mac II or PowerBook) with
  276.           two MB of RAM or more should work OK, but older "small screen"
  277.           Macs will be awkward, due to a lot of graphical scrolling that
  278.           will be needed. Version 1.1 (and now Version 1.2) is being
  279.           delivered on two disks, without compression. (Each disk contains
  280.           the HyperCard runtime integrated with a volume of HOT_Ada.) You
  281.           will need about three MB of free space on your hard disk.
  282.  
  283.      How to Order by Mail?
  284.  
  285.      Write a personal check for $49 to Stage Harbor Software and mail it to
  286.      Stage Harbor Software, 9 Patriots Drive, Lexington, MA 02173. Be sure
  287.      to specify the Windows or Mac version of HOT_Ada, and include your
  288.      e-mail address if you have one. (Credit card orders are not accepted.)
  289.  
  290.      To Order from Outside the USA
  291.  
  292.      To order from outside the USA, you can send an International Postal
  293.      Money Order or have your bank wire funds to my account at
  294.  
  295.               The Cooperative Bank,
  296.               12 Nagog Park, Acton, MA, 01720-9890, USA,
  297.               Account: Bard S. Crawford, Stage Harbor Software,
  298.               Account Number  03520457558
  299.  
  300.      -- and let Bard Crawford know separately that you are doing so.
  301.  
  302.      [Source: Bard Crawford, Stage Harbor Software]
  303.  
  304. Here are some other Ada-related educational materials that you may find
  305. helpful:
  306.  
  307.   1. Introducing Ada95 is a set of slides about Ada 95 by Richard Conn,
  308.      released without restrictions on its use and distribution. Here's a
  309.      quote from Richard Conn:
  310.  
  311.           This is a day-long short course that introduces Ada95. The
  312.           purpose of the course is to explore the Ada95 language,
  313.           including its facilities for object-oriented design and
  314.           programming, real-time programming, distributed processing,
  315.           and other domains. The course will concentrate on the
  316.           practical aspects of applying the features of Ada95 to the
  317.           software development process. Numerous examples of the
  318.           language are presented.
  319.  
  320.      Richard Conn's tutorial is available in Zipped Powerpoint Postscript
  321.      format. (736K). A README file accompanies the tutorial.
  322.  
  323.      Free viewers for both Macintosh (602K) and PCs running Windows (1,092K)
  324.      are available for those who do not own Powerpoint.
  325.  
  326.   2. Ada 95: The Next Generation, a slide set by Mike Kamrad, is available
  327.      through the SIGAda server. It is available in both Powerpoint 4.0 for
  328.      the Macintosh format (140K) and Powerpoint 4.0 for Windows format
  329.      (84K). Free viewers for both Macintosh (602K) and PCs running Windows
  330.      (1,092K) are available for those who do not own Powerpoint.
  331.  
  332.   3. ASSET maintains a collection of Ada-related courseware; see ASSET's WWW
  333.      page for more information.
  334.  
  335.   4. Other PAL Courseware (mirror) products are available by FTP (in
  336.      addition to AdaTutr and Lovelace, listed above). Walnut Creek mirrors
  337.      the PAL onto its Ada CD-ROM. A copy of the Ada CD-ROM is available
  338.      on-line.
  339.  
  340.   5. An "Academic Ada" package is being developed by Intermetrics. The
  341.      expected date for the beta version for Windows NT is March 1996, with
  342.      final versions out May 1996 (Windows NT) and Summer 1996 (other
  343.      platforms).
  344.  
  345. ----------------------------------------------------------------------------
  346.  
  347. 4: Is there a list of good Ada books?
  348.  
  349. Mike Feldman maintains annotated bibliographies. they are selected lists of
  350. useful books, with capsule reviews. You are invited to write reviews.
  351.  
  352. Michael B. Feldman
  353. Education Working Group Chair, ACM Special Interest Group on Ada (SIGAda)
  354. Department of Electrical Engineering and Computer Science
  355. The George Washington University
  356. Washington, DC 20052
  357. (202) 994-5919 (voice)
  358. (202) 994-0227 (fax)
  359. mfeldman@seas.gwu.edu
  360. http://www.seas.gwu.edu/faculty/mfeldman/
  361.  
  362.                        Ada 95 Textbooks: Brief Reviews
  363.  
  364.                                 February 1996
  365.  
  366.  
  367.  
  368. This bibliography is a project of the SIGAda Education Working Group. I am
  369. serving as the editor of the list, and the contact point for sending in
  370. reviews, but there are many reviewers. You too can be one! Just send a
  371. capsule review, in the form of the ones here, and I will be glad to add it
  372. to the list and credit you for the contribution.
  373.  
  374. Reviewers in this edition are Ted Baker, Jack Beidler, Michael Feldman, Stan
  375. Kwasny, and Pat Rogers. Their initials appear after their respective
  376. reviews.
  377.  
  378. There are nine books listed here; within each category, books are listed
  379. alphabetically by author. I am informed of three more books in the pipeline,
  380. all from Springer Verlag: an advanced data structures text by Jack Beidler,
  381. an Ada 95 book for C and C++ programmers by Simon Johnston, and a book
  382. version of David Wheeler's Lovelace, a very well-received Ada 95 tutorial on
  383. the World Wide Web.
  384.  
  385. Group 1: Books Suitable for a First Course in Programming
  386.  
  387. Ada 95: Problem Solving and Program Design.
  388. Michael Feldman and Elliot Koffman.
  389. Addison-Wesley, 1996. (ISBN 0-201-87009-6)
  390.      As with the earlier edition by the same authors, the first 2/3 of the
  391.      book is suitable as a CS1 text with Ada as the language of instruction,
  392.      and the the last few chapters, combined with some language-independent
  393.      algorithm theory, cover the rest of the Ada langauge in sufficient
  394.      depth to serve as the language-specific basis of a CS2 course.
  395.  
  396.      The style is like that of a musical fugue: sections that develop
  397.      general programming and problem solving techniques are interleaved with
  398.      sections that develop successively larger subsets of the Ada 95
  399.      language and libraries; examples recur from one chapter to another, in
  400.      progressively more completely developed forms. Packages are introduced
  401.      from the start; other language features are introduced very gradually
  402.      at first and then at a progressively faster pace. Loops come up in
  403.      chapter 5, records and arrays by chapter 8, generics by chapter 11, and
  404.      pointers, tagged types, and tasks in chapters 14-16. The nearly 200
  405.      examples have all been compiled and tested, and are available in
  406.      electronic format from the first author, the Addison Wesley home page,
  407.      and the usual Ada archives.(T.B.)
  408.  
  409. Ada from the Beginning. (2nd ed.)
  410. Jan Skansholm.
  411. Addison-Wesley, 1994. (ISBN 0-201-62448-6)
  412.      This book was one of the first to use Ada with CS1-style pedagogy.
  413.      There are excellent sections on the idiosyncracies of interactive I/O
  414.      (a problem in all languages), and a sufficient number of fully-worked
  415.      examples to satisfy students. Generics, linked lists and recursion are
  416.      covered at the end; there is no tasking coverage, but one would not
  417.      expect this at CS1-level. A very interesting addition is the new
  418.      Chapter 14, in which OOP in both Ada 83 and Ada 95 is discussed. This
  419.      is an especially lucid explanation of OOP in Ada, and makes a real
  420.      contribution because it doesn't just discuss tagged types as a
  421.      "feature" of Ada 95, but shows very nicely what is possible in Ada 83
  422.      (instead of just what is not possible), and shows how Ada 95 adds
  423.      functionality. Because the book was published before the Ada 95
  424.      standard was finalized, there are necessarily some inconsistencies.
  425.      These are minor and, we hope, will be corrected as the book is
  426.      reprinted.(M.B.F.)
  427.  
  428. Group 2: Books on Specific Topics, with Ada 95 as the Language of Discourse
  429.  
  430. Concurrency In Ada
  431. Alan Burns and Andy Wellings.
  432. Cambridge University Press, 1995. (ISBN 0-521-41471-7)
  433. (Concurrent Programming and Real-Time Systems)
  434.      The ultimate Ada concurrency book (Burns' "Concurrent Programming In
  435.      Ada") has a successor for Ada95. Written by acknowledged real-time
  436.      experts, it covers the tasking model in great depth, including all the
  437.      existing and new capabilities as well as the Systems Programming Annex,
  438.      the Real-Time Systems Annex, and the Distributed Systems Annex. Also
  439.      included are an introduction to concurrent programming and an
  440.      examination of the interaction of the tasking facilities with those for
  441.      object-oriented programming. More than just a detailed language
  442.      examination, the book offers many examples of usage and analysis of
  443.      feature interaction that only these two authors could provide. Highly
  444.      recommended for introductory and advanced courses in concurrent and
  445.      real-time programming with Ada. (P.R.)
  446.  
  447. Software Construction and Data Structures with Ada 95.
  448. Michael B. Feldman
  449. Addison Wesley, 1996. (ISBN 0-201-88795-9)
  450. (CS2/data structures)
  451.      As a book about data structures, this well-written, teachable book
  452.      assumes a base knowledge of Ada, although a quick review of the basics
  453.      is included.
  454.  
  455.      Ada95 features are incorporated smoothly into the discussion and the
  456.      coded examples (which are available from the author). The book strikes
  457.      a nice balance between theoretical issues and practice with a wealth of
  458.      examples and much attention to detail, including a nice discussion on
  459.      how to time a program. The extensive material coverage includes
  460.      standard CS2 topics like "big O" analysis, linked lists, queues and
  461.      stacks, graphs, trees, hash methods, and sorting, but the reader is
  462.      allowed to investigate topics beyond the basics through additional
  463.      topics like strings, vectors, tables, file I/O, sets, priority queues,
  464.      AVL trees, and B-Trees, and several complete and illustrative examples,
  465.      including an employee database, an airline passenger list, an RPN
  466.      calculator, a discrete simulation, and even a simple window manager.
  467.  
  468.      By introducing generic units relatively early (chapter 5), the text can
  469.      focus on reusability and sound software engineering solutions to a wide
  470.      variety of data structures problems, but never neglects the underlying
  471.      analysis. As a capstone to the development of several generic data
  472.      structures, chapter 14 covers generic sorting according to a wide
  473.      variety of methods each with its own data structure nuances. The final
  474.      chapter introduces concurrency.
  475.  
  476.      This book is in final production for publication in May, 1996. The
  477.      nearly 200 programs and packages have all been compiled and tested, and
  478.      are available in electronic form from the author, the Addison Wesley
  479.      home page, and the usual Ada archives.(S.C.K.)
  480.  
  481. Methodes de Genie Logiciel avec Ada 95 (in French)
  482. (Software Engineering Methods with Ada 95)
  483. Jean-Pierre Rosen
  484. Paris, InterEditions, 1995. (ISBN 2-7296-0569-X)
  485. (Software Engineering)
  486.      This is a very interesting book written by a long-standing expert in
  487.      Ada and software engineering. Various methodologies are compared
  488.      (Booch, HOOD, Schlaer-Mellor, etc.), all in the context of Ada 95 but
  489.      not limited to language-specific discussions. Enough Ada 95
  490.      fundamentals are taught that it should not be necessary to know Ada 95
  491.      before reading the book, but this is not a book for people without some
  492.      programming background.
  493.  
  494.      Recommended for classes taught in French and for individuals with a
  495.      good reading knowledge of French. The author is developing an English
  496.      translation, which I await enthusiastically. (M.B.F.)
  497.  
  498. Object-Oriented Software in Ada 95
  499. Michael A. Smith.
  500. International Thomson Computer Press, 1996. (ISBN 1-85032-185-X)
  501. (Object-Oriented Programming for Advanced Undergraduates)
  502.      This book begins by providing an introduction to problem solving using
  503.      a Fusion-based object-oriented design methodology, in addition to
  504.      examining the basic constructs in the Ada 95 language. The book then
  505.      moves on to discuss the object-oriented features of the language, using
  506.      numerous examples to illustrate the ideas of encapsulation,
  507.      inheritance, and polymorphism. The book's capstone is a detailed case
  508.      study of the design and implementation of a textual user interface
  509.      (TUI) using object-oriented design methodology. This is a nice,
  510.      understandable, straightforward book on OOP with Ada 95, quite suitable
  511.      for self-study or an advanced undergraduate course. The brief survey of
  512.      Ada 95 at the beginning should be sufficient for readers with
  513.      programming experience. The several dozen source code files are
  514.      available on the Internet.
  515.  
  516. Group 3: General Texts Covering All of Ada 95
  517.  
  518. Programming In Ada 95, first edition
  519. John Barnes.
  520. Addison-Wesley, 1995. (ISBN 0-201-87700-7)
  521.      This new book by John Barnes continues a tradition of easy readability
  522.      that belies the depth of understanding required to make a complex
  523.      subject accessible. Though a new book for a new Ada, the style and
  524.      humor from the earlier book remain. The new Ada standard is covered as
  525.      a language in its own right, with few references to its predecessor
  526.      beyond a summary of language differences in each chapter. The core
  527.      facilities are covered extensively, with emphasis on rationale and the
  528.      "programming in the large" issues of abstraction, OOP, tasking and
  529.      exceptions. Of particular value is the chapter entitled Object Oriented
  530.      Techniques, which explores the application of the OOP, tasking and
  531.      generic unit facilities explained earlier in the book. Each chapter
  532.      contains coding exercises for further study, with fullly worked-out
  533.      answers in the back. The many who appreciated the earlier book will
  534.      likewise enjoy this, the new classic on Ada95. Highly recommended for
  535.      readers with programming experience. (P.R.)
  536.  
  537. Ada as a Second Language (2nd Edition)
  538. Norman Cohen.
  539. McGraw Hill, 1996. (ISBN 0-07-011607-5)
  540.      This is more like a new book than like a new edition. The first edition
  541.      of this book was a excellent reference to Ada(83), well organized and
  542.      filled with excellent examples of realistic code sequences. It was the
  543.      perfect reference to the language for those with substantial
  544.      programming experience in another programming language. One of the more
  545.      important features of the first edition is a well constructed index,
  546.      which becomes the major passageway into the book as it grows old and
  547.      worn.
  548.  
  549.      That was the first edition, the second edition builds upon the
  550.      excellent organization that made the first edition an excellent
  551.      reference and adds material on the new features in Ada(95). To be more
  552.      precise, the new material is not added, it is integrated into a
  553.      seamless reference to Ada(95). The book is composed into twenty well
  554.      focused chapters and five appendices, including an appendix on the
  555.      special needs annexes. Each chapter concludes with two sections, one on
  556.      differences between Ada(83) and Ada(95), and a very brief chapter
  557.      summary. Isolating the discussion of '83 versus '95 differences to a
  558.      single section in each chapter has kept the rest of the presentation in
  559.      each chapter clean and to the point.
  560.  
  561.      As an example of the quality in this book, consider Chapter Twelve,
  562.      Classwide Programming. This is the chapter that describes Ada's object
  563.      oriented programming support. Again the word "seamless" comes to mind.
  564.      Unless you know ahead of time what are the new features in the language
  565.      and what are the old features, you could not tell from the
  566.      presentation. Polymorphism, type extension, dispatching are presented
  567.      in a clear direct way, with excellent sample pieces of code. I was
  568.      particularly impressed by the clean presentation of Ada.Finalization,
  569.      and the realistic easy to follow sample code for the Initialize,
  570.      Finalize, and Adjust procedures.
  571.  
  572.      In conclusion, "Ada as a Second Language, is the best non-language
  573.      lawyer reference to Ada(95), even for those whose first language is
  574.      Ada(83). (J.B.)
  575.  
  576. Rendezvous with Ada 95
  577. David J. Naiditch.
  578. John Wiley and Sons, 1995. (ISBN 0-471-01276-9)
  579.      This book is a revision of Naiditch's earlier "quick introduction" to
  580.      Ada for experienced programmers. The second edition is no longer
  581.      "quick" (it is nearly 150 pages longer) but is the best integrated
  582.      introduction to Ada 95 to appear thus far. One wishes only that the
  583.      author had provided more complete, compilable examples instead of the
  584.      fragments so typical of Ada texts. (M.B.F.)
  585.  
  586. ----------------------------------------------------------------------------
  587.  
  588.                An Annotated Sampling of Ada-Oriented Textbooks
  589.  
  590.                                  August 1995
  591.  
  592.     (with contributions from Jack Beidler, Duane Jarc, Suzanne Pawlan Levy,
  593.     Mathew Lodge, Pat Rogers, and David Weller, as indicated by their
  594. initials following their reviews)
  595.  
  596. As chair of the SIGAda Education Working Group, and a denizen of the
  597. Internet newsgroups, I am often asked to give references for "Ada
  598. textbooks." This list responds to these many queries.
  599.  
  600.    * Group 1: Books Suitable for a First Course in Programming
  601.    * Group 2: Other Books Intended for Undergraduate Courses
  602.    * Group 3: A Selection of Other Ada-Related Books
  603.  
  604. The textbooks in the Group 1 are written especially for students without
  605. programming experience, who are learning Ada as their first language. Most
  606. of these can also cover at least part of a typical CS2-level course. The
  607. books in Group 2 use Ada as their language of discourse but are
  608. "subject-oriented:" data structures, file structures, compilers, comparative
  609. languages. The remaining books in Group 3 are either "Ada books" focusing on
  610. the language features or more general books that use Ada, at least in part,
  611. but do not fit obviously into a standard curriculum "pigeonhole."
  612.  
  613. I invite you to add to the list. Please write your annotated entry in the
  614. form I have used here and write or e-mail it to me, mfeldman@seas.gwu.edu .
  615. I will include it in my next version and credit you as a co-compiler of the
  616. list.
  617.  
  618. Disclaimers: I wrote two of the texts listed here; I hope the annotations
  619. are impartial enough. And any annotated bibliography is selective and
  620. opinionated. Your mileage may vary.
  621.  
  622. ----------------------------------------------------------------------------
  623.  
  624. Group 1: Books Suitable for a First Course in Programming
  625.  
  626. Bover, D.C.C., K.J. Maciunas, and M.J. Oudshoorn.
  627. Ada: A First Course in Programming and Software Engineering.
  628. Addison-Wesley, 1992. ISBN 0-201-50992-X
  629.      This work is, to our knowledge, the first Ada book to emerge from
  630.      Australia, from a group of authors with much collective experience in
  631.      teaching Ada to first-year students. A number of interesting examples
  632.      are presented, for example, an Othello game. The book is full of gentle
  633.      humor, a definite advantage in a world of dry and serious texts. In the
  634.      book's favor is the large number of complete programs. On the other
  635.      hand, it is rather "European" in its terseness; American teachers may
  636.      miss the pedagogical apparatus and "hand-holding" typically found in
  637.      today's CS1 books. Generic units are hardly mentioned.
  638.  
  639. Culwin, F.
  640. Ada: a Developmental Approach.
  641. Prentice-Hall, 1992.
  642.      This work introduces Ada along with a good first-year approach to
  643.      software development methodology. Much attention is paid to program
  644.      design, documentation, and testing. Enough material is present in data
  645.      structures and algorithm analysis is present to carry a CS2 course. A
  646.      drawback of the book is that the first third is quite "Pascal-like" in
  647.      its presentation order: procedures, including nested ones, are
  648.      presented rather early, and packages are deferred until nearly the
  649.      middle of the book. This is certainly not a fatal flaw, but it will
  650.      frustrate teachers wishing a more package-oriented presentation. The
  651.      programs and solutions are apparently available from the author.
  652.  
  653. Dale, N., D. Weems, and J. McCormick.
  654. Programming and Problem Solving with Ada.
  655. D. C. Heath, 1994. ISBN 0-669-29360-1
  656.      This book is inspired by Dale and Weems' very successful Introduction
  657.      to Pascal and Structured Design, but it is not simply an Ada version.
  658.      Ada's more advanced capabilities such as exceptions, packages and
  659.      generic units are included in this text. In addition, more than half of
  660.      the material is completely new, and the order of the topics is
  661.      signficantly different. It also has more of a software engineering
  662.      focus than the Pascal version. The only Ada topics not included in this
  663.      text are tasks and access types. Procedures and packages are introduced
  664.      early. Each chapter includes case studies, testing and debugging hints
  665.      and excellent non-programming exercises and programming problems. The
  666.      text comes with a program disk containing all the programs given in the
  667.      book. In addition, a validated Meridian Ada compiler with complete
  668.      documentation is available at low cost to students using this book. (S.
  669.      P. L.)
  670.  
  671. DeLillo, N. J.
  672. A First Course in Computer Science with Ada.
  673. Irwin, 1993. (ISBN 0-256-12538-4)
  674.      This book is a first in the Ada literature: a version comes with an Ada
  675.      compiler, the AETech-IntegrAda version of Janus Ada. Author, publisher,
  676.      and software supplier are to be commended for their courage in this.
  677.      The book itself covers all the usual CS1 topics. In my opinion, the
  678.      order of presentation is a bit too Pascal-like, with functions and
  679.      procedures introduced in Chapter 5 (of 15) and no sign of packages
  680.      (other than Text_IO) until Chapter 10. Unconstrained arrays and
  681.      generics are, however, done nicely for this level, and Chapter 13 is
  682.      entirely devoted to a single nontrivial case study, a statistical
  683.      package. I wish there were more complete programs in the early
  684.      chapters, to put the (otherwise good) discussion of control and data
  685.      structures in better context.
  686.  
  687. Feldman, M.B., and E.B. Koffman.
  688. Ada: Problem Solving and Program Design.
  689. Addison-Wesley, 1992. ISBN 0-201-53364-2
  690.      This work combines the successful material from Koffman's CS1 pedagogy
  691.      with a software-engineering-oriented Ada presentation order. Packages
  692.      are introduced early and emphasized heavily; chapters on abstract data
  693.      types, unconstrained arrays, generics, recursion, and dynamic data
  694.      structures appear later. The last five chapters, combined with some
  695.      language-independent algorithm theory, can serve as the basis of a CS2
  696.      course. A diskette with all the fully-worked packages and examples
  697.      (about 180) is included; the instructor's manual contains a diskette
  698.      with project solutions. A second edition, with Ada 95 as the language,
  699.      is in preparation and due out at the beginning of 1996.
  700.  
  701. Savitch, W.J. and C.G. Petersen.
  702. Ada: an Introduction to the Art and Science of Programming.
  703. Benjamin/Cummings, 1992. ISBN 0-8053-7070-6
  704.      This is a straightforward adaptation of the well-known Savitch Pascal
  705.      books. Ada is introduced in a Pascal-like order, with subtypes and
  706.      packages introduced halfway through the book. This is purely a CS1
  707.      book. The final chapter covers dynamic data structures. There is
  708.      minimal coverage of unconstrained array types; generics are introduced
  709.      at the halfway point to explain Text_IO, then continued only in the
  710.      final chapter. The authors intended this book to provide a painless
  711.      transition to Ada for teachers of Pascal; one wishes they had taken
  712.      advantage of the chance to show some of the interesting Ada concepts as
  713.      well. Program examples from the text are available on disk, but only as
  714.      part of the instructor's manual; a solutions disk is available for a
  715.      fee from the authors.
  716.  
  717. Skansholm, J.
  718. Ada from the Beginning. (2nd ed.)
  719. Addison Wesley, 1994. ISBN 0-201-62448-6
  720.      This book was one of the first to use Ada with CS1-style pedagogy.
  721.      There are excellent sections on the idiosyncracies of interactive I/O
  722.      (a problem in all languages), and a sufficient number of fully-worked
  723.      examples to satisfy students. Generics, linked lists and recursion are
  724.      covered at the end; there is no tasking coverage, but one would not
  725.      expect this at CS1-level. A very interesting addition is the new
  726.      Chapter 14, in which OOP in both Ada 83 and Ada 95 is discussed. This
  727.      is an especially lucid explanation of OOP in Ada, and makes a real
  728.      contribution because it doesn't just discuss tagged types as a
  729.      "feature" of Ada 95, but shows very nicely what is possible in Ada 83
  730.      (instead of just what is _not_ possible), and shows how Ada 95 adds
  731.      functionality.
  732.  
  733. Smith, J. F., and T. S. Frank
  734. Introduction to Programming Concepts and Methods with Ada
  735. McGraw-Hill, Inc., 1994 ISBN 0-07-911725-2
  736.      This is a well written and easy to use text. The book takes a spiraled
  737.      approach to CS 1. The authors do an excellent job integrating Ada into
  738.      the book. They take a very direct approach, especially with an early
  739.      introduction to the package concept and the traditional Text_IO
  740.      package. Faculty who have taught CS 1 with Pascal should like this
  741.      book. Instead of making a big fanfare about Ada features, they simply
  742.      introduce them as good support for software development concepts. The
  743.      authors have carefully chosen the Ada topics they decided to cover in
  744.      this book in order to strike a balance between staying true to the CS 1
  745.      course while presenting enough of the programming language. If you
  746.      teach CS 1 you might at least want to get a copy of this text just to
  747.      look at two chapters, Chapter 7 and Chapter 14. Seven covers program
  748.      correctness and run-time event (exception handling) and fourteen is a
  749.      beautiful presentation and example of generic packaging. Both
  750.      presentations are done in an appropriate manner for CS 1. (J. B.)
  751.  
  752. Volper, D., and M. Katz.
  753. Introduction to Programming Using Ada.
  754. Prentice-Hall, 1990. ISBN 0-13-493529-2
  755.      This book uses a heavily "spiraled" approach to Ada, and is designed
  756.      for a 2-semester course, covering nearly all of Ada eventually. There
  757.      are lots of fully-coded examples, and good pedagogical sections on
  758.      testing, coding style, etc. If you like spiraling, you'll like this.
  759.      The down side is that you can't find all you need on a given subject in
  760.      one place. It's at the other end of the scale from the "Ada books" that
  761.      follow the Ada Language Reference Manual (LRM) order.
  762.  
  763. ----------------------------------------------------------------------------
  764.  
  765. Group 2: Other Books Intended for Undergraduate Courses
  766.  
  767. Ben-Ari, M.
  768. Principles of Concurrent and Distributed Programming.
  769. Prentice-Hall 1990. ISBN 0-13-711821-X
  770. (OS/concurrency)
  771.      In my opinion, this is the best introduction to concurrency on the
  772.      market. Ada notation is used for everything, but the focus is on
  773.      concurrency and not on Ada constructs per se. I liked the CoPascal
  774.      notation of the first edition better, but this book is still great. A
  775.      software disk is promised in the preface; I had to work quite hard to
  776.      get it from the publisher, which finally had to express-ship it from
  777.      England. The software comes with a tiny Ada-ish interpreter, complete
  778.      with Pascal source code, adapted from Wirth's Pascal/S via CoPascal.
  779.      There are also some real Ada programs, most of which I've tested and
  780.      found correct and portable.
  781.  
  782. Feldman, M.B.
  783. Data Structures with Ada.
  784. Addison Wesley, 1993. ISBN 0-201-52673-5
  785. (CS2/data structures)
  786.      This book is a reasonable approximation to a modern CS2 book: "big O"
  787.      analysis, linked lists, queues and stacks, graphs, trees, hash methods,
  788.      and sorting, are all covered. The Ada is a bit old-fashioned,
  789.      especially the lack of generics; the book was published before
  790.      compilers could handle generics. The packages and other programs are
  791.      available free from the author. The book has been heavily revised; the
  792.      Ada 95-based second edition should appear early in 1996 from
  793.      Addison-Wesley.
  794.  
  795. Fischer, C., and R. LeBlanc.
  796. Crafting a Compiler.
  797. Benjamin Cummings, 1988. ISBN 0-8053-3201-4
  798. (compilers)
  799.      This book uses Ada as its language of discourse and Ada/CS, a usefully
  800.      large Ada subset, as the language being compiled. If you can get the
  801.      "plain Pascal" tool software by ftp from the authors, you'll have a
  802.      good translator-writing toolset. Skip the Turbo Pascal diskette
  803.      version, which is missing too many pieces to be useful. I've used the
  804.      book since it came out with both undergrad and graduate compiler
  805.      courses; it embodies a good blend of theory and "how it's really done"
  806.      coding. Students like it. The authors have recently published a second
  807.      version, which uses C as its coding language but retains Ada/CS as the
  808.      language being compiled.
  809.  
  810. Hillam, B.
  811. Introduction to Abstract Data Types Using Ada.
  812. Prentice-Hall, 1994. ISBN 0-13-045949-6
  813. (data structures)
  814.      This is a very readable treatment of data structures presented using
  815.      Ada that makes good use of Ada features such as generics. It contain
  816.      many complete programs and packages. Unfortunately, obvious syntax
  817.      errors make it apparent that not all examples have been compiled. The
  818.      level of presentation is somewhere between an elementary, CS 2, data
  819.      structures course and an advanced, CS 7, course. A subset of first
  820.      eleven chapters provide the appropriate topics for a CS 2 course, but
  821.      not the pedagogy necessary for a course at that level. (D. J.)
  822.  
  823. Lomuto, N.
  824. Problem-Solving Methods with Examples in Ada.
  825. Prentice-Hall, 1987.
  826. (algorithms)
  827.      Inspired by Polya's classic How to Solve It, this book can make a nice
  828.      addition to an Ada-oriented algorithms course. It makes too many
  829.      assumptions about students' programming background to use as a CS1
  830.      book, and doesn't teach enough Ada to be an "Ada book." But it makes
  831.      nice reading for students sophisticated enough to handle it. I'd
  832.      classify it as similar to Bentley's Programming Pearls.
  833.  
  834. Miller, N.E. and C.G. Petersen.
  835. File Structures with Ada.
  836. Benjamin/Cummings, 1990. ISBN 0-8053-0440-1
  837. (file structures)
  838.      Designed for a straightforward ACM-curriculum file structures course,
  839.      this book succeeds at what it does. There are good discussions of ISAM
  840.      and B-tree organizations. The software can be purchased a low cost from
  841.      the authors; it seems to approximate in Ada all those C-based file
  842.      packages advertised in programmer-oriented trade publications.
  843.  
  844. Schneider, G.M., and S.C. Bruell.
  845. Concepts in Data Structures and Software Development
  846. (with Ada Supplement by P. Texel).
  847. West, 1991.
  848. (CS2/data structures)
  849.      This work is not, strictly speaking, an Ada book; rather, it is a
  850.      solid, language-independent approach to modern CS2. The language of
  851.      discourse in the book is a Pascal-like ADT language rather like
  852.      Modula-2 in style; some examples are coded in legal Pascal. The Ada
  853.      supplement makes it usable in an Ada-based course, but the supplement
  854.      is rather too terse (100 pages of large type) for my taste, and
  855.      insufficiently well keyed to the book chapters. The supplement's
  856.      effectiveness would be greatly enhanced by full translations to Ada of
  857.      a large number of the book's examples.
  858.  
  859. Sebesta, R.W.
  860. Concepts of Programming Languages (2nd ed.).
  861. Benjamin Cummings, 1993. ISBN 0-8053-7132-X
  862. (comparative languages)
  863.      If you've been around for a while, you might remember the late Mark
  864.      Elson's 1975 book by the same title. This is similar: a concept-by-
  865.      concept presentation, with -- in each chapter -- examples taken from
  866.      several languages. I include this work in an "Ada list" because I like
  867.      its nice, impartial coverage of Ada. I especially like the chapters on
  868.      abstraction and exception handling. The book covers -- comparatively,
  869.      of course -- most of the lanuages you'd like to see, including C, C++,
  870.      Lisp, Smalltalk, etc., with nice historical chapters as well. The book
  871.      is readable; my students like it. Our undergraduate and graduate
  872.      courses both use it as a base text.
  873.  
  874. Stubbs, D.F., and N.W. Webre.
  875. Data Structures with Abstract Data Types and Ada.
  876. PWS-Kent, 1993. ISBN 0-534-14448-9
  877. (advanced data structures)
  878.      This work updates and adapts to Ada the material in the authors'
  879.      successful data structures texts using Pascal and Modula-2. It is good
  880.      for a "heavy" CS2, i.e., one on the theoretical side, or a "light" CS7,
  881.      i.e. it is not as theory-oriented as the Weiss work below. More Ada,
  882.      especially regarding advanced types, is taught here than in Weiss.
  883.      Especially interesting about all the books from these authors is that
  884.      they have matched their "big O" performance prediction with tables and
  885.      graphs showing actual performance measurements.
  886.  
  887. Weiss, M.A.
  888. Data Structures and Algorithms in Ada.
  889. Benjamin/Cummings, 1993. ISBN 0-8053-9055-3
  890.      I think this book reaches its intended market -- data structures
  891.      courses (CS7) -- rather well with Ada. There's a good mixture of theory
  892.      and practice (ADT design, for example), and coverage of new topics like
  893.      amortized algorithm analysis and splay trees. A book at this level
  894.      should not pay too much attention to teaching a language; rather it
  895.      should make good use of its language of discourse. The Ada version does
  896.      not attempt to teach either the language or Ada-style software
  897.      engineering, but shows good understanding of the language, uses generic
  898.      packages quite well and focuses on the theory of algorithms, as a book
  899.      at this level should. This is the first, and so far the only, text in
  900.      Ada for this course.
  901.  
  902. ----------------------------------------------------------------------------
  903.  
  904. Group 3: A Selection of Other Ada-Related Books
  905.  
  906. Barnes, J. G. P.
  907. Programming in Ada. (4th edition)
  908. Addison-Wesley, 1994. ISBN 0-201-62407-9
  909.      Barnes' work has been one of the most popular "Ada books." Some
  910.      students find it hard to see how the pieces fit together from Barnes'
  911.      often fragmentary examples; it is difficult to find complete,
  912.      fully-worked out, compilable programs. On the other hand, this book has
  913.      been a real best-seller, so Barnes clearly is doing something right.
  914.      The fourth edition has a 100-page summary of Ada 95, and a
  915.      fully-integrated Ada 95 fifth edition is in production for Fall 1995
  916.      release. Also, the third (Ada 83) edition is still in print, with an
  917.      Ada 83 reference manual included.
  918.  
  919. Booch, G.
  920. Software Components with Ada.
  921. Benjamin Cummings, 1987. ISBN 0-8053-0610-2
  922.      This work is an encyclopedic presentation of data structure packages
  923.      from Booch's OOD point of view. It is great for those who love
  924.      taxonomies. It's not for the faint-hearted, because the volume of
  925.      material can be overwhelming. It could serve as a text for an advanced
  926.      data structures course, but it's thin in "big O" analysis and other
  927.      algorithm-theory matters. The book is keyed to the (purchasable) Booch
  928.      Components.
  929.  
  930. Booch, G. and D. Bryan, with C. Petersen
  931. Software Engineering with Ada. (3rd edition)
  932. Benjamin/Cummings 1994. ISBN 0-8053-0613-7
  933.      Another of the classical "Ada books." Introduces Booch's OOD ideas. Not
  934.      for use to introduce Ada to novices, in my opinion; there are some nice
  935.      fully-worked case studies but they begin too far into the book, after
  936.      long sections on design, philosophy, and language elements. The earlier
  937.      chapters contain too much fragmentary code, a common flaw in books that
  938.      follow the LRM order. The third edition contains an appendix describing
  939.      Ada 9X.
  940.  
  941. Bryan, D.L., and G.O. Mendal.
  942. Exploring Ada, Volumes 1.and 2.
  943. Prentice-Hall, 1990 and 1992 respectively. ISBN 0-13-295684 (vol. 1); ISBN
  944. 0-13-297227-1 (vol. 2)
  945.      This is an excellent study of some of the interesting nooks and
  946.      crannies of Ada; it sometimes gets tricky and "language-lawyerly."
  947.      Volume 2 takes up tasking, generics, exceptions, derived types, scope
  948.      and visibility; Volume 1 covers everything else. The programs are short
  949.      and narrowly focused on specific language issues. If you like Bryan's
  950.      "Dear Ada" column in Ada Letters, you'll like this book. It is
  951.      certainly not a book for beginners, but great fun for those who know
  952.      Ada already and wish to explore.
  953.  
  954. Burns, A., and G. Davies.
  955. Concurrent Programming.
  956. Addison-Wesley, 1993, ISBN 0-201-54417-2
  957.      Solid book covering all aspects of writing concurrent software. Uses a
  958.      version of Pascal called FC-Pascal (available for free through the
  959.      Internet). The FC means "Functionally Concurrent". It has constructs
  960.      that are similar to Ada 9X, and this is by no accident -- the authors
  961.      frequently point out that the implementations in FC-Pascal are taken
  962.      from Ada 9X's Tasks and Protected Types. Covers lots of low-level
  963.      problems by gradually building up from simple examples. Highly
  964.      recommended for a Concurrent Programming class. Exercises and Further
  965.      readings are provided at the end of each chapter. (D.W.)
  966.  
  967. Burns, A. and A. Wellings.
  968. Concurrency In Ada.
  969. Cambridge University Press, 1995. ISBN 0-521-41471-7
  970.      The ultimate Ada concurrency book (Burns' Concurrent Programming In
  971.      Ada) has a successor for Ada95. Written by acknowledged real-time
  972.      experts, it covers the tasking model in great depth, including all the
  973.      existing and new capabilities as well as the Systems Programming Annex,
  974.      the Real-Time Systems Annex, and the Distributed Systems Annex. Also
  975.      included are an introduction to concurrent programming and an
  976.      examination of the interaction of the tasking facilities with those for
  977.      object-oriented programming. More than just a detailed language
  978.      examination, the book offers many examples of usage and analysis of
  979.      feature interaction that only these two authors could provide. Highly
  980.      recommended for introductory and advanced courses in concurrent and
  981.      real-time programming with Ada. (P.R.)
  982.  
  983. Burns, A. and A. Wellings.
  984. Real Time Systems and their Programming Languages
  985. Addison-Wesley 1990. (ISBN 0-201-17529-0)
  986.      This is an excellent and unique book. Basic concepts and terminology
  987.      are explained before moving on to explain the major aspects of real
  988.      time design. "Real world" examples are presented in Ada, Modula-2 and
  989.      occam 2, though Ada is clearly the authors' language of choice and gets
  990.      the most coverage. Topics covered include reliability and fault
  991.      tolerance, concurrency, synchronisation, scheduling, message passing,
  992.      atomic transactions, resource control, distributed systems and
  993.      low-level device control. Efficiency is not neglected, and Ada support
  994.      here is particularly strong with detail on the CIFO package. Several
  995.      case studies are also presented. The only failing of the book is that
  996.      it needs updating to cover Ada 9x and its real-time annex, Modula-3
  997.      etc. However, the basic concepts that the authors convey so clearly are
  998.      independent of implementation language. (M. L.)
  999.  
  1000. Cohen, N.
  1001. Ada as a Second Language.
  1002. McGraw Hill, 1986. ISBN 0-07-011589-3
  1003.      This book is a quite comprehensive exploration of Ada which follows the
  1004.      LRM in its presentation order. My graduate students like it because it
  1005.      is more detailed and complete than alternative texts. It's an excellent
  1006.      book for students who know their languages and want to study all of
  1007.      Ada. There are good discussions of "why's and wherefore's" and many
  1008.      long, fully-worked examples. An anxiously-awaited 2nd edition covering
  1009.      Ada 95 is in the pipeline.
  1010.  
  1011. Gauthier, M.
  1012. Ada: Un Apprentissage (in French).
  1013. Dunod, 1989.
  1014. Ada: a Professional Course (in English).
  1015. Macmillan Computer Science Series, 1993. ISBN 0-333-58001-X.
  1016.      I found this an especially interesting, almost philosophical approach
  1017.      to Ada. The first section presents Ada in the context of more general
  1018.      laguage principles: types, genericity, reusability. The second section
  1019.      introduces testing and documentation concerns, as well as tasking; the
  1020.      third considers generics and variant records in the more general
  1021.      context of polymorphism. For mature Ada students in the French-speaking
  1022.      world, and others who can follow technical French, this book can serve
  1023.      as a different slant on the conventional presentations of the language.
  1024.      The more recent English edition is a contribution to the Ada literature
  1025.      in English, because of its getting behind the language itself into the
  1026.      more general language-design principles.
  1027.  
  1028. Gehani, N.
  1029. Ada: an Advanced Introduction (2nd edition).
  1030. Prentice-Hall, 1989. ISBN 0-13-004334-6
  1031.      I've always liked Gehani's literate writing style; he knows his
  1032.      languages and treats Ada in an interesting, mature, and balanced
  1033.      fashion. This book comes with a diskette sealed in the back of the
  1034.      book, which is advantageous because the book has numerous nontrivial,
  1035.      fully- worked examples.
  1036.  
  1037. Gehani, N.
  1038. Ada: Concurrent Programming (2nd edition).
  1039. Silicon Press, 1991. ISBN 0-929306-08-2
  1040.      This is a less formal, more Ada-oriented presentation of concurrency
  1041.      than the Ben-Ari work. I use both books in my concurrency course; its
  1042.      real strength is the large number of nontrivial, fully worked examples.
  1043.      Gehani offers a nice critique of the tasking model from the point of
  1044.      view of an OS person. The preface promises the availability of a
  1045.      software disk from the publisher.
  1046.  
  1047. Naiditch, D.J.
  1048. Rendezvous with Ada 95
  1049. New York: John Wiley and Sons, 1995. ISBN 0-471-01276-9
  1050.      This book is a revision of Naiditch's earlier "quick introduction" to
  1051.      Ada for experienced programmers. The second edition is no longer
  1052.      "quick" (it is nearly 150 pages longer) but is the best integrated
  1053.      introduction to Ada 95 to appear thus far. One wishes only that the
  1054.      author had provided more complete, compilable examples instead of the
  1055.      fragments so typical of Ada texts. Nevertheless, I recommend it as the
  1056.      best introduction to Ada 95 at this point.
  1057.  
  1058. Nyberg, K. (editor)
  1059. The Annotated Ada Reference Manual. (3rd edition)
  1060. Grebyn Corporation, 1993.
  1061.      This is the definitive work on Ada legalities, because it presents not
  1062.      only the full text of the LRM but also the official Ada Interpretations
  1063.      as prepared by the Ada Rapporteur Group of Working Group 9 of the
  1064.      International Organization for Standardization (ISO) and approved by
  1065.      that organization. These commentaries, interleaved with the LRM text,
  1066.      are promulgated by the Ada Joint Program Office, the American National
  1067.      Standards Institute (ANSI) agent for Ada, in the Ada Compiler
  1068.      Validation Suite (ACVC). They are thus binding upon compiler
  1069.      developers. I recommend this book as an essential volume in the library
  1070.      of every serious Ada enthusiast.
  1071.  
  1072. Watt, D.A., B.A. Wichmann, and W. Findlay.
  1073. Ada Language and Methodology.
  1074. Prentice-Hall, 1987. ISBN 0-13-004078-9
  1075.      This work presents some interesting programming projects, and the
  1076.      coverage of design and testing--at the level of a first-year
  1077.      student--is quite good. The first third of the book concentrates
  1078.      heavily on classical control and data structures, leaving subprograms
  1079.      until Chapter 12, and exceptions and packages until the "programming in
  1080.      the large" material in the second third. CS2 teachers will find too
  1081.      little concentration on algorithm analysis. On the other hand, tasking
  1082.      and machine-dependent programming are covered. Like the Shumate work,
  1083.      this book would make a suitable introduction to Ada for students with a
  1084.      semester or so of programming experience; it "jumps in" too quickly to
  1085.      satisfy the needs of neophytes and is not well-tailored to CS1 or CS2
  1086.      needs.
  1087.  
  1088. ----------------------------------------------------------------------------
  1089.  
  1090. 5: Credits
  1091.  
  1092. The following persons have contributed to the information gathered in this
  1093. FAQ: Michael Feldman--who maintains the annotated lists of Ada books,
  1094. David A. Wheeler--who developed the original version of the tutorials list,
  1095. and Gordon Dodrill.
  1096.  
  1097. The maintainer has simply :-) organized, polished, or added some information
  1098. for your satisfaction.
  1099.  
  1100. ----------------------------------------------------------------------------
  1101.  
  1102. 6: Copying this FAQ
  1103.  
  1104. This FAQ is Copyright © 1996 by Magnus Kempe. It may be freely redistributed
  1105. --as posted by the copyright holder in comp.lang.ada and comp.edu-- in other
  1106. forums than Usenet News as long as it is completely unmodified and that no
  1107. attempt is made to restrict any recipient from redistributing it on the same
  1108. terms. It may not be sold or incorporated into commercial documents without
  1109. the explicit written permission of the copyright holder.
  1110.  
  1111. Permission is granted for this document to be made available under the same
  1112. conditions for file transfer from sites offering unrestricted file transfer
  1113. on the Internet and from Forums on e.g. Compuserve and Bix.
  1114.  
  1115. This document is provided as is, without any warranty.
  1116.  
  1117. ----------------------------------------------------------------------------
  1118. Magnus Kempe -- Magnus.Kempe@di.epfl.ch
  1119.